#ifndef GAMESTATE_OPTIONS_OPTIONS_H
#define GAMESTATE_OPTIONS_OPTIONS_H


#include "Engine/Reason.h"
#include "Engine/Visual.h"
#include "Engine/Sense.h"
#include "Interface/Menu.h"
#include "Engine/Resource/Graphic.h"
#include "SDL.h"

namespace GameState { namespace Options { class OptionEntry; }  } 
namespace Engine { class Backbone; } 

namespace GameState {

namespace Options {

//Option gamestate
class Options : public Engine::Reason, public Engine::Visual, public Engine::Sense {
  private:
	Interface::Menu topMenu; 
	Engine::Resource::Graphic background; 
	static Options * singleInstance; 
	Options(); 

  public:
	static inline Options * raise(); 
	~Options(); 
	virtual void pulse(int delta); 
	virtual Engine::Resource::GraphicList display(); // Asks for generation of a graphical model to be displayed
	inline virtual void exit(); 
	virtual void keyDown(SDLKey sym, SDLMod mod, Uint16 unicode); 
};
inline Options * Options::raise()
{
	if (singleInstance == NULL) singleInstance = new Options();
	return singleInstance;
}

inline void Options::exit() {
}


} // namespace GameState::Options

} // namespace GameState
#endif
